%a thorough analysis of your experimental results
\section{Analysis of experiments}
All experimental work was lead using the 100 test boards presented on \url{dd2380.csc.kth.se} by communicating on port 5032.

Our first experiments were led by using an agent that implemented all of the improvements mentioned before. Nonetheless the solver was failing to find a solution for a large amount of test cases. It failed either because it timed out or because it was simply unable to get to a final state.

Due to this, we decided to check whether the improvements made were making the agent better or worse.

First we tried by suppressing the identification of dynamic and static deadlocks. Nonetheless, when the newly generated agent was tested it resulted in worse results. This indicated that the pruning by deadlocks was correct.

In a second attempt we tried to eliminate the pruning of the tunnels. After trying this new agent, we found out that the agent had high improvements not only in time, but also it was able to solve some boards that couldn't be solved before.

This lead to two different conclusions. First, since we got time improvements by deleting the tunnels, we could conclude that we were incorporating too many improvements to prune the algorithm. This meant that too much time was spent calculating whether a node should be pruned or not, and so we weren't digging fast enough into the tree. On the other side, since we also got solutions for boards that we couldn't solve before, we could conclude that maybe there was a bug on the tunneling algorithm, which was pruning important branches of the tree that could have lead to a valid solution, but which were never explored.

After removing the tunnel pruning, the agent actually managed to either get a valid solution to the board, or not give a solution because it timed out. This suggests that every improvement implemented was working fine, but perhaps some optimizations must be done in order to prune nodes faster and get to a final state in time.

Perhaps another main issue in the performance of the algorithm was the hash-key function used. Even though the function managed to map many different configurations to the same key, which lead to a high pruning factor. Probably a better key can be found that does a better mapping in a shorter time, and for instance results could be found faster.